/**
 * @author Q
 * @create 2025-07-09-14:36
 */

/**
 * 概念:
 *      1.什么是需求
 *      2.开发模型
 *      3.测试模型
 */
public class Test {
    public static void main(String[] args) {
        /**
         * 3.测试模型
         *      1.V模型
         *          明确的标注了测试过程中存在的不同类型的测试，
         *          并且清楚的描述了这些测试阶段和开发过程期间各阶段的对应关系，
         *          有效提升测试的质量和效率（优点）
         *          缺点：同瀑布模型
         *     2.W模型
         *          特点：测试的对象不仅是程序，需求、设计等同样要测试，测试与开发是同步进⾏的
         *          优点：有利于尽早发现问题，减少测试时间，加快项目进度
         *          缺点：依旧是线性的，无法支持敏捷模型
         */
    }
    public static void main2(String[] args) {
        /**
         * 2.开发模型
         *      1.模型：工作流程
         *      2.软件的生命周期（流程）：
         *      需求分析--->计划--->设计--->编码--->测试--->运⾏维护
         *      3.常见开发模型/流程
         *          1.瀑布模型（适用于需求固定的小项目）：
         *              优点/特点：
         *                  1.强调开发的阶段性
         *                  2.线性结构，每个阶段只执行一次（最主要的特点）
         *                  3.是其它模型的基础框架
         *              缺点：
         *                  1.测试后置
         *                      1.前面阶段问题最后才会被测试发现，可能会导致项目大面积返工，失去了马上修复的机会（不能直接修复，需要从头再来）
         *                      2.必须留有足够时间进行测试，否则将会产生很多缺陷展示给用户（用户体验不好，最大缺点）
         *                  2.周期太长，产品需要很长时间才能上线，可能导致上线后没有需求/需求过时（不符合潮流，没有收益）
         *          2.螺旋模型（适用于规模庞⼤、复杂度⾼、⻛险⼤的项⽬）：
         *              优点/特点：
         *                  1.强调严格的全过程⻛险管理。
         *                  2.强调各开发阶段的质量。
         *                  3.每个阶段都增加⻛险分析和原型（最主要的特点）。
         *              缺点：
         *                  1.项⽬中可能存在的⻛险性与⻛险管理⼈员的技能⽔平有直接关系
         *                  2.需求⼈员、资⾦、时间的增加和投⼊，可能会导致项⽬的成本太⾼
         *          3.增量模型（逐块建造）、迭代模型（反复求精）（使用于大项目，需求不明确）
         *          4.敏捷模型
         *              增量开发（分解需求使用）+迭代开发（开发需求时）
         *              特点：
         *                  轻⽂档，轻流程，重⽬标，重产出
         *              主要代表：scrum模型
         *                  三个（类）角色
         *                      产品经理（整理用户需求，制作需求）、项目经理（召开会议，协调项目）、研发团队（协同完成任务）
         *                  五个重要会议
         *                      发布计划会议
         *                          产品经理，评估用户需求合理性，确定迭代计划
         *                      迭代计划会议
         *                          团队对计划进行分解，明确任务完成时间和负责人
         *                      每日例会
         *                          汇报昨天情况 + 问题 + 今天准备做什么（确定进度）
         *                      演示会议
         *                          相关人员参会，提供需求，产品经理记录总结需求，需求最后放在需求最后
         *                      回顾会议
         *                          团队总结，发现不足，改进计划
         */
    }
    public static void main1(String[] args) {
        /**
         * 1.什么是需求
         *      1.用户需求
         *          一句话（没有经过评审/不一定能实现）
         *      2.软件需求
         *          详细描述开发人员必须实现的软件功能（一定可以实现）
         */
    }
}
